Modern conventional distributed computer software applications frequently operate in networked computing environments that include several different types of computerized devices that are each responsible for executing different portions of the distributed software application. The different portions of the distributed software application communicate with each other over a network to exchange information related to the functionality of the software application. By way of example, consider a storage area network environment in which several storage area network elements (i.e., devices) such as disk storage systems, tape backup systems, network attached storage devices, server or host computer systems, storage area network switches and other such elements interoperate to provide overall storage area network functionality. A developer or administrator of such a storage area network environment may install one or more distributed storage area network management software applications within the storage area network to manage or administer the various elements (i.e., devices, computer systems, storage systems, etc.) that operate within the storage area network.
A typical conventional storage area network management software application may have several different portions. There typically exists a console portion that executes or otherwise operates in a dedicated storage area network management workstation to allow the administrator to remotely control and manage all of the various elements within the storage area network from this central location. The console is typically a graphical user interface-based application that allows the administrator to graphically visualize the storage area network for selection of individual elements to monitor and/or manage. Host computer systems such as data servers within the storage area network may operate agent or responder portions of the storage area network management application that receive remote management commands from the console and apply functionality associated with these commands to the elements within the storage area network (e.g., to data storage systems coupled to the host). There may be several of these remote agent or responder portions of the storage area network management application distributed throughout the storage area network, and some may operate in server computer systems, while others may operate directly within other storage area network elements such as switches, data storage systems, and the like.
To assist in the development of such complex distributed or networked software applications, software application developers working within several commercial companies and software development consortiums have created a number of different software development architectures, platforms or paradigms to allow for the efficient creation of distributed or highly complex software applications. As an example, software development platforms such as the “Java 2 Enterprise Edition” (J2EE) developed and distributed by Sun Microsystems, Inc. of Palo Alto Calif. and the “Common Object Request Broker Architecture” (CORBA) software development model created by a consortium of software developers at different companies each provide object oriented and/or component-based software development platforms and software application runtime environment architectures that allow for efficient creation, integration and reuse of software objects or components.
Using CORBA as an example, a software application developer can create conventional CORBA-based software components that encapsulate functionality related to a specific task or operation. The software components can operate on a remote computer system in conjunction with the component server. The developers of the CORBA system have created a conventional CORBA-based C++ component framework that implements a lightweight component model that is based on a CORBA portable object adapter specification. In the CORBA component framework, a CORBA component server includes tightly integrated component management functionality to allow a remotely executing management software application to cause the CORBA component server to load, link and activate various developer-created software components that require access to the CORBA component server. The CORBA component framework thus supports service components to provide remote services as per software developer's requirements and further allows the software developer to control or remotely manage the component server to control installation and activation of those component services. As an example, if conventional a CORBA-based system were used to create a distributed software application, the developer would install the component server on the remote computer system and could interact directly with the component server to use management functionality integrated into the component server to remote install various software components to perform functionality created by the developer. The component server includes component management or administration functionality to allow the developer, for example, to remotely start and stop execution of developer-created components, and to remote load and unload such components.